# 自定义模块 my_module.py

# Python 模块(Module)，是一个 Python 文件，以 .py 结尾，模块能定义函数，类和变量，模块里也能包含可执行的代码。
# 在Python中，每个Python文件都可以作为一个模块，模块的名字就是文件的名字。

# 所以：自定义模块名必须要符合标识符命名规则。
# 2.1 定义模块

# 新建一个Python文件，命名为 my_module1.py，并定义 test1函数。

__all__ = ['my_sum']  # 声明当前模块，只能公开my_sum函数，test不让调用
def my_sum(n):
    """
    计算从0到n的数字之和
    :param n: 正整数
    :return:
    """
    s = 0
    for i in range(n):
        s += i
    return s


def test(n: int) -> int:
    """
    计算一个数字n的阶乘
    :param n:
    :return:
    """
    if n == 1:
        return 1  # 递归函数退出的出口
    return n * test(n - 1)


# 有瑕疵 不合适 输出。 如果站在调用这个模块的角色来看，会加载这个文件，输出这些函数的打印。懵了
# print(my_sum(8))
# print(test(6))

if __name__ == '__main__':  # 如果当前py文件就是执行的入口，未来测试自定义模块的方式。
    print(my_sum(8))
    print(test(6))
